package com.ft.core.enums;

import java.util.Arrays;
import java.util.Optional;

/**
 * @copyright (C), 2015-2019, XXX有限公司
 * @fileName: IEnumIntValue
 * @author: 李阳
 * @date: 2019/6/27 23:17
 * @description: 公共父枚举接口
 * @history: <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
public interface IEnumIntValue {
    /**
     * 枚举值
     * @return
     */
    int getValue();

    /**
     * 是否存在该枚举值的枚举
     * @param enumClass
     * @param value
     * @param <E>
     * @return
     */
    static <E extends Enum<?> & IEnumIntValue> Optional<E> codeOf(Class<E> enumClass, int value) {
        return Arrays.stream(enumClass.getEnumConstants()).filter(e -> e.getValue() == value).findAny();
    }
}
